package com.chen.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chen.mapper.VmTypeMapper;
import com.chen.pojo.common.PageResult;
import com.chen.pojo.dto.VmTypeDto;
import com.chen.pojo.entry.VmType;
import com.chen.service.VmTypeService;
import com.chen.utils.PageUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author chen
 * @version 1.0
 * @create_date 2025/8/19
 * 设备类型管理业务实现类
 */
@Service
@Transactional
public class VmTypeServiceImpl extends ServiceImpl<VmTypeMapper, VmType> implements VmTypeService {
    @Autowired
    private VmTypeMapper vmTypeMapper;

    /**
     * 分页查询
     *
     * @param pageIndex 起始页
     * @param pageSize  页大小
     * @param name      设备类型名称
     * @return 设备类型列表
     */
    @Override
    public PageResult<VmType> searchList(Integer pageIndex, Integer pageSize, String name) {
        Page<VmType> page = new Page<>(pageIndex, pageSize);
        LambdaQueryWrapper<VmType> wrapper = new LambdaQueryWrapper<>();
        wrapper.like(StringUtils.isNotBlank(name), VmType::getName, name);
        page = vmTypeMapper.selectPage(page, wrapper);
        return PageUtils.mapperResult(page);
    }

    /**
     * 新增设备类型
     *
     * @param vmTypeDto 设备类型信息
     * @return 结果
     */
    @Override
    public Boolean addVmType(VmTypeDto vmTypeDto) {
        VmType vmType = new VmType();
        BeanUtils.copyProperties(vmTypeDto, vmType);
        vmTypeMapper.insert(vmType);
        return true;
    }

    /**
     * 更新设备类型
     *
     * @param typeId    设备类型id
     * @param vmTypeDto 设备类型信息
     * @return 结果
     */
    @Override
    public Boolean updateType(String typeId, VmTypeDto vmTypeDto) {
        VmType vmType = new VmType();
        BeanUtils.copyProperties(vmTypeDto, vmType);
        vmType.setTypeId(Integer.valueOf(typeId));
        vmTypeMapper.updateById(vmType);
        return true;
    }

    /**
     * 删除设备类型信息
     *
     * @param typeId 设备类型id
     * @return 结果
     */
    @Override
    public Boolean deleteType(String typeId) {
        vmTypeMapper.deleteById(typeId);
        return true;
    }
}
